PostgreSQL PGPOOL-II 日常维护

1 背景知识

本章主要介绍 pgpool-II 的日常管理和使用。

2 pgpool 停止

2.1 语法定义

pgpool [-f config_file][-F pcp_config_file] [-m {s[mart]|f[ast]|i[mmediate]}] stop

2.2 选项说明

选项 说明
-f config_file 指定pgpool.conf
-a hba_file 指定 pool_hba.conf
-F pcp_config_file 指定pcp.conf
-m s[mart] 等客户端断开连接,然后关闭。
-m f[ast] 并不等待客户端;立即关闭。
-m i[immediate] 等同于 -m f

2.3 停止pgpool

Warning

先关备库,再关主库,关闭顺序不对则会造成主备切换。

pgpool -f $PGHOME/etc/pgpool.conf -F $PGHOME/etc/pcp.conf -a $PGHOME/etc/pg_hba.conf -m fast stop

2.4 配置pgpool停止脚本

vi $PGHOME/bin/pool_stop.sh
chmod +x pool_stop.sh

3 pgpool启动

3.1 语法定义

pgpool [-c][-f config_file][-a hba_file][-F pcp_config_file][-n][-D][-d]

3.2 选项说明

选项 说明
-c 删除 query cache
-f config_file 指定pgpool.conf
-a hba_file 指定 pool_hba.conf
-F pcp_config_file 指定pcp.conf
-n 非守护进程模式。
-D 忽略 pgpool_status 文件,指不恢复到指定的状态。
-C 忽略用基于内存的查询缓存的 libmemcached
-d 调试模式。

3.3 启动pgpool

Warning

先启主库,再启备库,启动顺序不对则会造成主备切换。

pgpool -f $PGHOME/etc/pgpool.conf -F $PGHOME/etc/pcp.conf -a $PGHOME/etc/pool_hba.conf  

3.4 配置pgpool 启动脚本

vi $PGHOME/bin/pool_start.sh
chmod +x pool_start.sh

4 将启动和停止脚本拷贝到其他节点上

scp $PGHOME/bin/pool_start.sh $PGHOME/bin/pool_stop.sh node2:$PGHOME/bin/
scp $PGHOME/bin/pool_start.sh $PGHOME/bin/pool_stop.sh node3:$PGHOME/bin/

5 pgpool 重新加载配置文件

5.1 语法定义

pgpool [-c][-f config_file][-a hba_file][-F pcp_config_file] reload

5.2 选项说明

选项 说明
-f config_file 指定pgpool.conf
-a hba_file 指定 pool_hba.conf
-F pcp_config_file 指定pcp.conf
pgpool -f $PGHOME/etc/pgpool.conf -F $PGHOME/etc/pcp.conf -a $PGHOME/etc/pool_hba.conf  reload

6 pgpool SHOW 命令

命令 说明
show pool_status; 获取配置。
show pool_nodes; 获取节点信息。
show pool_processes; 获取pgpool-II 连接池信息。
show pool_pools; 获取 pgpool-ii 所有连接池信息。
show pool_version; 获取pgpool-II 版本信息。

7 登录数据库

psql -h vip -p 9999 -U postgres
psql -h vip -p 9999 -U pgpool

8 pcp 命令

8.1 获取节点数

pcp_node_count -h vip -p 9898 -U pgpool
//屏幕输出:
3

8.2 获取节点信息

pcp_node_info -h vip -p 9898 -U postgres 0
//屏幕输出:
node1 5432 2 0.333333 up up primary primary 0 none none 2023-09-13 16:21:43

8.3 关联一个节点

pcp_attach_node -h vip -p 9898 -U postgres -n 1
pcp_node_info -h vip -p 9898 -U postgres 1

8.4 隔离一个节点

pcp_detach_node -h vip -p 9898 -U postgres -n 1
pcp_node_info -h vip -p 9898 -U postgres 1

8.5 显示 pgpool-II 的 watchdog 状态

pcp_watchdog_info -h vip -p 9898 -U postgres 
//屏幕输出:
3 3 YES node1:9999 Linux node1 node1

node1:9999 Linux node1 node1 9999 9000 4 LEADER 0 MEMBER
node2:9999 Linux node2 node2 9999 9000 7 STANDBY 0 MEMBER
node3:9999 Linux node3 node3 9999 9000 7 STANDBY 0 MEMBER